/** 树表格配置类型定义 */
import type { Types } from '#/views/onlineDesign/designPage/template/type/types';

export namespace TreeTableType {
  // 查询表单额外配置类型
  export interface SelectFormExtra {
    // 是否展示搜索
    showSelect: boolean;
    // 是否存在字典下拉
    existDict: boolean;
    // 是否存在表下拉
    existTable: boolean;
    // 是否存在树表下拉
    existTreeTable: boolean;
  }
  // 重载表单属性
  export interface FormComponent extends Types.BaseFormComponent {
    /** 其他配置 */
    extra?: {
      // java包路径
      fieldPackagePath: string;
      // 关联模式（0关联模型 1关联字典）
      fieldRelevanceMode: number;
      // 组件额外参数
      params: {
        // 显示字段
        labelField: string;
        // 条件
        sqlSelect: string;
        // 表名
        tableName: string;
        // 值字段
        valueField: string;
      };
      // 是否搜索
      showSelect: boolean;
    };
    // 字段顺序
    sequence: number;
  }
  // 表格基础配置
  export interface Table {
    // 是否展示序号
    showSerialNumber?: boolean;
    // 字典设置
    dict?: {
      // 字典编码
      dictCodes?: Array<string>;
      // 是否存在字典
      exist?: boolean;
    };
  }
  // 重载表格列
  export interface TableColumns extends Types.BaseTable {
    // 其他配置
    extra?: {
      // 字典编码
      dictCode?: string;
      // 字段顺序
      sequence?: number;
    };
  }
  // 表单额外配置
  export interface FormExtra {
    // 打开表单的类型 modal, drawer
    openFormType?: 'drawer' | 'modal';
    // 打开宽度 %
    openFormWidth?: '30' | '50' | '80' | '100';
    // 是否有字典下拉
    existDict: boolean;
    // 是否有表字典下拉
    existTable: boolean;
    // 是否存在树表下拉
    existTreeTable: boolean;
  }
  // 重载表单配置
  export interface FormBase extends Types.BaseForm {
    // 是否展示表单默认按钮
    showDefaultActions: boolean;
  }
}
